package leetcode.N201_N300;

/**
 * @author 歪大哥😁
 * @date 2020-01-28.
 * https://leetcode-cn.com/problems/nim-game/
 * Nim游戏
 *
 * 你和你的朋友，两个人一起玩 Nim 游戏：桌子上有一堆石头，每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
 *
 * 你们是聪明人，每一步都是最优解。 编写一个函数，来判断你是否可以在给定石头数量的情况下赢得游戏。
 *
 * 示例:
 *
 * 输入: 4
 * 输出: false
 * 解释: 如果堆中有 4 块石头，那么你永远不会赢得比赛；
 *      因为无论你拿走 1 块、2 块 还是 3 块石头，最后一块石头总是会被你的朋友拿走。
 *
 */
public class N292 {

    public static void main(String[] args) {
        // 因为每个人只能取1-3颗，所以面对4的倍数的人必输
        // 也就是说当数量是4的倍数时，后手必胜
        // 所以只要总数不是4的倍数，先手将余数拿走，便能获胜
        int n = 4;
        System.out.println(canWinNim(n));
    }

    static boolean canWinNim(int n) {
        return (n & 3) != 0;
    }

}
